/*

This file is part of roomyak.

Copyright (C) 2008 Pixecur Technologies Incorporated (Esotera).
Visit Esotera at http://www.esoteras3.com
 
roomyak is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
 
roomyak is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with roomyak; see the file COPYING.  If not, write to 
Pixecur Technologies, 213-31 Peet Street, St. John's, NL, A1B 3W8. 
 
Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
 
*/
package tests.com.datasentinel.utils;

import static org.junit.Assert.*;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

import org.junit.Test;

import com.datasentinel.util.FileHelper;


public class FileHelper_Test
{
	@Test
	public void shrinkFile_Case1()
	{
		long startingLength = 52631;
		long expectedLength = 12334;
		String tempFolder = System.getProperty("java.io.tmpdir");
		assertNotNull(tempFolder);
		File tempFile = null;
		try{
			tempFile = File.createTempFile("test_shrinkFile", "~tmp");
			
			BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(tempFile));
			Random random = new Random(1234);
			for(long i = 0; i < startingLength; ++i)
				os.write(random.nextInt());
			os.close();
		}catch(IOException e)
		{
			e.printStackTrace();
			fail("Problems while testing shrinkFile()");
		}
		assertNotNull(tempFile);
		assertTrue(FileHelper.shrinkFile(tempFile, expectedLength));
		assertEquals(expectedLength, tempFile.length());
		assertTrue(tempFile.delete());
	}
}
